import axios from 'axios'
import { Message } from 'element-ui';

import store from '@/store'

import Qs from 'qs' //将请求参数 对象转换成 表单格式

// 创建请求实例
export const $axios = axios.create({
    // 设置超时时间
    timeout: 30000,
    // 基础url，会在请求url中自动添加前置链接
    baseURL: '/cms-api' // 'http://www.520gongfu.com:8888/api/private/v1/'
})

// 添加请求拦截器
$axios.interceptors.request.use(function(config) {
    // 在发送请求之前做些什么

    // 登录状态判断
    const token = store.getters.token
    if (token) {
        // config.headers.Authorization = token
        config.headers['Authorization'] = token
    }

    return config;
}, function(error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
$axios.interceptors.response.use(function(response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    if (response.data.meta.status === 200) {
        return Promise.resolve(response.data)
    } else {
        // 出现 数据 错误信息 直接弹窗不做 任何数据返回
        Message.error(response.data.meta.msg ? response.data.meta.msg : '错误信息')
    }
}, function(error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    console.log(error);
    Message.error('错误信息')
        // return Promise.reject(error);
});













function post(url, data) {
    return $axios({
        method: 'post',
        url,
        data: Qs.stringify(data),
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
        }
    })
}

function get(url, params) {
    return $axios({
        method: 'get',
        url,
        params
    })
}

function put(url, params) {
    return $axios({
        method: 'put',
        url,
        data: params
    })
}

function del(url, params) {
    return $axios({
        method: 'delete',
        url,
        params
    })
}
export default {
    post,
    get,
    put,
    del
}